package cn.lbd.income.entity;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class IncomeExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public IncomeExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andIdIsNull() {
            addCriterion("ID is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("ID is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(BigDecimal value) {
            addCriterion("ID =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(BigDecimal value) {
            addCriterion("ID <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(BigDecimal value) {
            addCriterion("ID >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("ID >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(BigDecimal value) {
            addCriterion("ID <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(BigDecimal value) {
            addCriterion("ID <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<BigDecimal> values) {
            addCriterion("ID in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<BigDecimal> values) {
            addCriterion("ID not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("ID between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("ID not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andPayTimeIsNull() {
            addCriterion("PAY_TIME is null");
            return (Criteria) this;
        }

        public Criteria andPayTimeIsNotNull() {
            addCriterion("PAY_TIME is not null");
            return (Criteria) this;
        }

        public Criteria andPayTimeEqualTo(String value) {
            addCriterion("PAY_TIME =", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeNotEqualTo(String value) {
            addCriterion("PAY_TIME <>", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeGreaterThan(String value) {
            addCriterion("PAY_TIME >", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeGreaterThanOrEqualTo(String value) {
            addCriterion("PAY_TIME >=", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeLessThan(String value) {
            addCriterion("PAY_TIME <", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeLessThanOrEqualTo(String value) {
            addCriterion("PAY_TIME <=", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeLike(String value) {
            addCriterion("PAY_TIME like", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeNotLike(String value) {
            addCriterion("PAY_TIME not like", value, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeIn(List<String> values) {
            addCriterion("PAY_TIME in", values, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeNotIn(List<String> values) {
            addCriterion("PAY_TIME not in", values, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeBetween(String value1, String value2) {
            addCriterion("PAY_TIME between", value1, value2, "payTime");
            return (Criteria) this;
        }

        public Criteria andPayTimeNotBetween(String value1, String value2) {
            addCriterion("PAY_TIME not between", value1, value2, "payTime");
            return (Criteria) this;
        }

        public Criteria andProvinceIsNull() {
            addCriterion("PROVINCE is null");
            return (Criteria) this;
        }

        public Criteria andProvinceIsNotNull() {
            addCriterion("PROVINCE is not null");
            return (Criteria) this;
        }

        public Criteria andProvinceEqualTo(String value) {
            addCriterion("PROVINCE =", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceNotEqualTo(String value) {
            addCriterion("PROVINCE <>", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceGreaterThan(String value) {
            addCriterion("PROVINCE >", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceGreaterThanOrEqualTo(String value) {
            addCriterion("PROVINCE >=", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceLessThan(String value) {
            addCriterion("PROVINCE <", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceLessThanOrEqualTo(String value) {
            addCriterion("PROVINCE <=", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceLike(String value) {
            addCriterion("PROVINCE like", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceNotLike(String value) {
            addCriterion("PROVINCE not like", value, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceIn(List<String> values) {
            addCriterion("PROVINCE in", values, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceNotIn(List<String> values) {
            addCriterion("PROVINCE not in", values, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceBetween(String value1, String value2) {
            addCriterion("PROVINCE between", value1, value2, "province");
            return (Criteria) this;
        }

        public Criteria andProvinceNotBetween(String value1, String value2) {
            addCriterion("PROVINCE not between", value1, value2, "province");
            return (Criteria) this;
        }

        public Criteria andTypeIsNull() {
            addCriterion("TYPE is null");
            return (Criteria) this;
        }

        public Criteria andTypeIsNotNull() {
            addCriterion("TYPE is not null");
            return (Criteria) this;
        }

        public Criteria andTypeEqualTo(String value) {
            addCriterion("TYPE =", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeNotEqualTo(String value) {
            addCriterion("TYPE <>", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeGreaterThan(String value) {
            addCriterion("TYPE >", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeGreaterThanOrEqualTo(String value) {
            addCriterion("TYPE >=", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeLessThan(String value) {
            addCriterion("TYPE <", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeLessThanOrEqualTo(String value) {
            addCriterion("TYPE <=", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeLike(String value) {
            addCriterion("TYPE like", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeNotLike(String value) {
            addCriterion("TYPE not like", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeIn(List<String> values) {
            addCriterion("TYPE in", values, "type");
            return (Criteria) this;
        }

        public Criteria andTypeNotIn(List<String> values) {
            addCriterion("TYPE not in", values, "type");
            return (Criteria) this;
        }

        public Criteria andTypeBetween(String value1, String value2) {
            addCriterion("TYPE between", value1, value2, "type");
            return (Criteria) this;
        }

        public Criteria andTypeNotBetween(String value1, String value2) {
            addCriterion("TYPE not between", value1, value2, "type");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameIsNull() {
            addCriterion("LEAD_CITY_NAME is null");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameIsNotNull() {
            addCriterion("LEAD_CITY_NAME is not null");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameEqualTo(String value) {
            addCriterion("LEAD_CITY_NAME =", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameNotEqualTo(String value) {
            addCriterion("LEAD_CITY_NAME <>", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameGreaterThan(String value) {
            addCriterion("LEAD_CITY_NAME >", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameGreaterThanOrEqualTo(String value) {
            addCriterion("LEAD_CITY_NAME >=", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameLessThan(String value) {
            addCriterion("LEAD_CITY_NAME <", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameLessThanOrEqualTo(String value) {
            addCriterion("LEAD_CITY_NAME <=", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameLike(String value) {
            addCriterion("LEAD_CITY_NAME like", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameNotLike(String value) {
            addCriterion("LEAD_CITY_NAME not like", value, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameIn(List<String> values) {
            addCriterion("LEAD_CITY_NAME in", values, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameNotIn(List<String> values) {
            addCriterion("LEAD_CITY_NAME not in", values, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameBetween(String value1, String value2) {
            addCriterion("LEAD_CITY_NAME between", value1, value2, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andLeadCityNameNotBetween(String value1, String value2) {
            addCriterion("LEAD_CITY_NAME not between", value1, value2, "leadCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameIsNull() {
            addCriterion("WORKABLE_CITY_NAME is null");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameIsNotNull() {
            addCriterion("WORKABLE_CITY_NAME is not null");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameEqualTo(String value) {
            addCriterion("WORKABLE_CITY_NAME =", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameNotEqualTo(String value) {
            addCriterion("WORKABLE_CITY_NAME <>", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameGreaterThan(String value) {
            addCriterion("WORKABLE_CITY_NAME >", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameGreaterThanOrEqualTo(String value) {
            addCriterion("WORKABLE_CITY_NAME >=", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameLessThan(String value) {
            addCriterion("WORKABLE_CITY_NAME <", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameLessThanOrEqualTo(String value) {
            addCriterion("WORKABLE_CITY_NAME <=", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameLike(String value) {
            addCriterion("WORKABLE_CITY_NAME like", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameNotLike(String value) {
            addCriterion("WORKABLE_CITY_NAME not like", value, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameIn(List<String> values) {
            addCriterion("WORKABLE_CITY_NAME in", values, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameNotIn(List<String> values) {
            addCriterion("WORKABLE_CITY_NAME not in", values, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameBetween(String value1, String value2) {
            addCriterion("WORKABLE_CITY_NAME between", value1, value2, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andWorkableCityNameNotBetween(String value1, String value2) {
            addCriterion("WORKABLE_CITY_NAME not between", value1, value2, "workableCityName");
            return (Criteria) this;
        }

        public Criteria andPriceIsNull() {
            addCriterion("PRICE is null");
            return (Criteria) this;
        }

        public Criteria andPriceIsNotNull() {
            addCriterion("PRICE is not null");
            return (Criteria) this;
        }

        public Criteria andPriceEqualTo(Double value) {
            addCriterion("PRICE =", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceNotEqualTo(Double value) {
            addCriterion("PRICE <>", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceGreaterThan(Double value) {
            addCriterion("PRICE >", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceGreaterThanOrEqualTo(Double value) {
            addCriterion("PRICE >=", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceLessThan(Double value) {
            addCriterion("PRICE <", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceLessThanOrEqualTo(Double value) {
            addCriterion("PRICE <=", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceIn(List<Double> values) {
            addCriterion("PRICE in", values, "price");
            return (Criteria) this;
        }

        public Criteria andPriceNotIn(List<Double> values) {
            addCriterion("PRICE not in", values, "price");
            return (Criteria) this;
        }

        public Criteria andPriceBetween(Double value1, Double value2) {
            addCriterion("PRICE between", value1, value2, "price");
            return (Criteria) this;
        }

        public Criteria andPriceNotBetween(Double value1, Double value2) {
            addCriterion("PRICE not between", value1, value2, "price");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateIsNull() {
            addCriterion("REVENUE_SETTLEMENT_RATE is null");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateIsNotNull() {
            addCriterion("REVENUE_SETTLEMENT_RATE is not null");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateEqualTo(Double value) {
            addCriterion("REVENUE_SETTLEMENT_RATE =", value, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateNotEqualTo(Double value) {
            addCriterion("REVENUE_SETTLEMENT_RATE <>", value, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateGreaterThan(Double value) {
            addCriterion("REVENUE_SETTLEMENT_RATE >", value, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateGreaterThanOrEqualTo(Double value) {
            addCriterion("REVENUE_SETTLEMENT_RATE >=", value, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateLessThan(Double value) {
            addCriterion("REVENUE_SETTLEMENT_RATE <", value, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateLessThanOrEqualTo(Double value) {
            addCriterion("REVENUE_SETTLEMENT_RATE <=", value, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateIn(List<Double> values) {
            addCriterion("REVENUE_SETTLEMENT_RATE in", values, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateNotIn(List<Double> values) {
            addCriterion("REVENUE_SETTLEMENT_RATE not in", values, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateBetween(Double value1, Double value2) {
            addCriterion("REVENUE_SETTLEMENT_RATE between", value1, value2, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andRevenueSettlementRateNotBetween(Double value1, Double value2) {
            addCriterion("REVENUE_SETTLEMENT_RATE not between", value1, value2, "revenueSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateIsNull() {
            addCriterion("INVESTMENT_SETTLEMENT_RATE is null");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateIsNotNull() {
            addCriterion("INVESTMENT_SETTLEMENT_RATE is not null");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateEqualTo(Double value) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE =", value, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateNotEqualTo(Double value) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE <>", value, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateGreaterThan(Double value) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE >", value, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateGreaterThanOrEqualTo(Double value) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE >=", value, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateLessThan(Double value) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE <", value, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateLessThanOrEqualTo(Double value) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE <=", value, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateIn(List<Double> values) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE in", values, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateNotIn(List<Double> values) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE not in", values, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateBetween(Double value1, Double value2) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE between", value1, value2, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andInvestmentSettlementRateNotBetween(Double value1, Double value2) {
            addCriterion("INVESTMENT_SETTLEMENT_RATE not between", value1, value2, "investmentSettlementRate");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementIsNull() {
            addCriterion("INCOME_SETTLEMENT is null");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementIsNotNull() {
            addCriterion("INCOME_SETTLEMENT is not null");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementEqualTo(Double value) {
            addCriterion("INCOME_SETTLEMENT =", value, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementNotEqualTo(Double value) {
            addCriterion("INCOME_SETTLEMENT <>", value, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementGreaterThan(Double value) {
            addCriterion("INCOME_SETTLEMENT >", value, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementGreaterThanOrEqualTo(Double value) {
            addCriterion("INCOME_SETTLEMENT >=", value, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementLessThan(Double value) {
            addCriterion("INCOME_SETTLEMENT <", value, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementLessThanOrEqualTo(Double value) {
            addCriterion("INCOME_SETTLEMENT <=", value, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementIn(List<Double> values) {
            addCriterion("INCOME_SETTLEMENT in", values, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementNotIn(List<Double> values) {
            addCriterion("INCOME_SETTLEMENT not in", values, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementBetween(Double value1, Double value2) {
            addCriterion("INCOME_SETTLEMENT between", value1, value2, "incomeSettlement");
            return (Criteria) this;
        }

        public Criteria andIncomeSettlementNotBetween(Double value1, Double value2) {
            addCriterion("INCOME_SETTLEMENT not between", value1, value2, "incomeSettlement");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}